

using System;
using System.Text;

using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Exceptions;

using LastFMGenNHibernate.EN.LastFM;
using LastFMGenNHibernate.CAD.LastFM;

namespace LastFMGenNHibernate.CEN.LastFM
{
        public partial class GrupoCEN
        {
        private IGrupoCAD _IGrupoCAD;

        public GrupoCEN(IGrupoCAD _IGrupoCAD)
        {
                this._IGrupoCAD = _IGrupoCAD;
        }

        public int New_ (int p_id, String p_etiqueta, System.Collections.Generic.IList<int> p_cancion, int p_grupo, String p_nombre, int p_valor, String p_nombreGrupo, System.Collections.Generic.IList<int> p_album)
        {
                GrupoEN grupoEN = null;
                int oid;

                //Initialized GrupoEN
                grupoEN = new GrupoEN ();
                grupoEN.Id = p_id;
                grupoEN.Etiqueta = p_etiqueta;
                if (p_cancion != null) {
                        grupoEN.Cancion = new System.Collections.Generic.List<LastFMGenNHibernate.EN.LastFM.CancionEN>();
                        foreach (int item in p_cancion) {
                                LastFMGenNHibernate.EN.LastFM.CancionEN en = new LastFMGenNHibernate.EN.LastFM.CancionEN ();
                                en.Id = item;
                                grupoEN.Cancion.Add (en);
                        }
                }
                if (p_grupo != -1) {
                        grupoEN.Grupo = new LastFMGenNHibernate.EN.LastFM.GrupoEN ();
                        grupoEN.Grupo.Id = p_grupo;
                }
                grupoEN.Nombre = p_nombre;
                grupoEN.Valor = p_valor;
                grupoEN.NombreGrupo = p_nombreGrupo;
                if (p_album != null) {
                        grupoEN.Album = new System.Collections.Generic.List<LastFMGenNHibernate.EN.LastFM.AlbumEN>();
                        foreach (int item in p_album) {
                                LastFMGenNHibernate.EN.LastFM.AlbumEN en = new LastFMGenNHibernate.EN.LastFM.AlbumEN ();
                                en.Id = item;
                                grupoEN.Album.Add (en);
                        }
                }
                //Call to GrupoCAD

                oid = _IGrupoCAD.New_ (grupoEN);
                return oid;
        }

        public void Destroy (int id)
        {
                _IGrupoCAD.Destroy (
                        id

                        );
        }

        public void Modify (int p_Grupo_OID, String p_etiqueta, String p_nombre, int p_valor, String p_nombreGrupo)
        {
                GrupoEN grupoEN = null;

                //Initialized GrupoEN
                grupoEN = new GrupoEN ();
                grupoEN.Id = p_Grupo_OID;
                grupoEN.Etiqueta = p_etiqueta;
                grupoEN.Nombre = p_nombre;
                grupoEN.Valor = p_valor;
                grupoEN.NombreGrupo = p_nombreGrupo;
                //Call to GrupoCAD

                _IGrupoCAD.Modify (grupoEN);
        }

        public System.Collections.Generic.IList<GrupoEN> DevolverGrupos (int first, int size)
        {
                System.Collections.Generic.IList<GrupoEN> list = null;

                list = _IGrupoCAD.DevolverGrupos (first, size);
                return list;
        }
        }
}
